package operations;
import java.util.Arrays;
import aboutTheBook.BookShelf;
import aboutTheBook.Book;
import java.util.Comparator;
//比较器
class numberOfLoansComparator implements Comparator<Book> {
    @Override
    public int compare(Book one, Book two) {
        return two.getNumberOfLoans()-one.getNumberOfLoans();
    }
}

public class Top implements IOperation,ICheckIsEmpty{
    @Override
    public boolean checkIsEmpty(BookShelf bookShelf) {
        return bookShelf.getSize()==0;
    }
    @Override
    public void work(BookShelf bookShelf) {
        if(checkIsEmpty(bookShelf)) {
            System.out.println("抱歉，书架为空！");
            return;
        }
        //传比较器进行比较
        /**抛出异常的原因：
        * Arrays.sort对数组中所有元素均进行排序，可是后面的没存放书的都默认是null
        * 此时对null引用getSize（）便会爆出空指针异常
        * 解决方法：
        * 1：只对有效元素进行排序
        * 2：自己写一个排序方法*/
        //在Arrays.sort中提供了这样一种方式：（待比较的数组，起始地址，结束地址（左闭右开，比较器））
        Arrays.sort(bookShelf.getBookList(),0,bookShelf.getSize(),new numberOfLoansComparator());
            for (int i = 0; i < Math.min(bookShelf.getSize(),3); i++) {
                System.out.print("借阅排行榜第"+(i+1)+"名： ");
                System.out.println(bookShelf.getBookList()[i]);
        }
    }
}
